package cn.harry.cabinet.server.dto.operationlog

import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.Serializable

/**
 * 操作日志查询请求DTO
 */
@Serializable
@InternalSerializationApi
data class OperationLogQueryRequest(
    /** 操作类型 */
    val operationType: String? = null,
    
    /** 操作子类型 */
    val operationSubType: String? = null,
    
    /** 操作结果 */
    val result: String? = null,
    
    /** 操作人ID */
    val operatorId: Long? = null,
    
    /** 操作人工号 */
    val operatorEmployeeId: String? = null,
    
    /** 目标对象类型 */
    val targetType: String? = null,
    
    /** 目标对象ID */
    val targetId: Long? = null,
    
    /** 开始时间（时间戳） */
    val startTime: Long? = null,
    
    /** 结束时间（时间戳） */
    val endTime: Long? = null,
    
    /** 页码（从1开始） */
    val page: Int = 1,
    
    /** 每页大小 */
    val size: Int = 20
) {
    /**
     * 验证分页参数
     */
    fun isValidPagination(): Boolean {
        return page > 0 && size > 0 && size <= 100
    }
    
    /**
     * 验证时间范围
     */
    fun isValidTimeRange(): Boolean {
        if (startTime != null && endTime != null) {
            return startTime <= endTime
        }
        return true
    }
    
    /**
     * 获取偏移量
     */
    fun getOffset(): Int {
        return (page - 1) * size
    }
}
